// {app_root}/middleware/auth.js
module.exports = (options, app) => {
    return async (ctx, next) => {
        const  token  = ctx.header.token
        if (!token) {
            ctx.throw(401, '没有权限')
        }
        // 2根据token，换取用户信息
        let user = {};
        try {
            user = ctx.helper.checkToken(token);
        } catch(error) {
            let fail = error.name === 'TokenExpiredError' ? 'token 已过期! 请重新获取令牌' : 'Token 令牌不合法!';
            console.log(fail)
            ctx.throw(401, fail);
        }

        // 5，把user信息挂载到全局ctx
        ctx.authUser = user;
        await next()
    }
}
